<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>两个数的最大公约数</title>
    <script src="../求两个数的最大公约数JavaScript书写文件夹/求两个数的最大公约数JavaScript数学文件.js"></script>
</head>
<body>
    
</body>
<script>
    // 需求：要求找出两个数的最大公约数

// 计算最大公约数的思路

//         1. 要有两个数字
//         2. 找到两个数字里面相对小的那一个

//           因为最大公约数不可能比相对小的那个数字还大
//           假设两个数字就是 10 和 20
//           循环的时候就应该是 从 1 ~ 10
//           我得到的数字就是 1 2 3 4 5 6 7 8 9 10
//           一个一个的去进行取余, 找到那个能倍两个数字都整除的数字
//           在找的过程中, 先找到 1, 再找到 2, 再找到 5, 再找到 10
//           需要等到循环结束, 我才能直到哪个是最大的, 因为最后一次的哪个就是最大的

//           换个思路, 倒着循环, 从 10 ~ 1 循环
//           那么我得到的数字就是 10 9 8 7 6 5 4 3 2 1
//           找到能被两个数字整除的那个数字
//           再找的过程中, 先找到 10, 再找到 5, 再找到 2, 再找到 1
//           再找的过程中, 我找到的第一个就是最大的, 就可以直接 break 结束循环了

//         3. 循环从 1 循环到相对比较小的数字
//           找到这些数字里面能整除的最大的那一个

// 书写函数:

//         1. 准备一个函数, 接收两个参数

//         2. 计算两个数字的最大公约数

//         3. 把计算结果返回

// 1. 准备一个函数接收两个参数
function gongYueShu(a, b)  {
    // 2. 计算两个数字的最大公约数

    // 2-1. 找到两个数字中相对小的那一个
    var min = a // 假设 a 比较小
    var max = b // 假设 b 比较大

    if (a > b) {
      min = b
      max = a
    }

    // 2-2. 循环从 比较小的数字(min) 到 1
    // 提前准备一个变量, 保存最大公约数
    var gys = 0
    for (var i = min; i >= 1; i--) {

      // 2-3. 找到那个能整除的数字
      if (min % i === 0 && max % i === 0) {

        // 2-4. 把找到的这个公约数赋值给 gys 变量
        gys = i // 找到的第一个就是最大公约数

        break

      }

    }

    // 到达这里, 表示找到了最大公约数
    // 3. 返回结果
    return gys
  }


  //  使用这个函数计算除两个数字的最大公约数
  var res = gongYueShu(10, 20)
  console.log(res)
</script>
</html>